<?php
session_start();
include "Includes/solotrn_sesion.php";
include "Includes/soloFun_Generales.php";

require_once "config.php";

$accion = $_GET["accion"];

switch($accion) {
    case "consultar":
        realizarBusqueda();
        break;
    case "consultarImagenes":
        consultarImagenes();
        break;
    case "mostrarImagen":
        mostrarImagen();
        break;
    case "rotarImagen":
        mostrarImagen(true);
        break;
    case "agregarCampos":
        agregarCampos();
        break;
    case "ordenarCampos":
        ordenarCampos();
        break;
    case "separador":
        consultarSeparadores();
        break;
    case "toolbarImagenes":
        toolbarImagenes();
        break;
    case "exportarImagen":
        exportarImagen();
        break;
}

function consultarImagenes() {
    global $MIES;

    $oConexion = new Conexion($MIES["motor_base"], $MIES["db_usuario"], $MIES["db_password"],
            $MIES["basedatos"], $MIES["servidor"], $MIES["flags"], $MIES["encoding"]);
    $id_tdl_datos = $_REQUEST["id_tdl_datos"];
    $oSmarty =& getSmartyObject();
    $oSmarty->assign("pagina_actual", $_REQUEST["pagina_actual"]);
    $oSmarty->assign("total_paginas", $_REQUEST["total_paginas"]);

    $params = array();
    $params[0] = array("idimagen", $id_tdl_datos, "int");
//echo $id_tdl_datos;
    if($oConexion->EjecutarProcedure("IMAGEN", $params)) {
        $lista = array();
        //while($fila = @mysql_fetch_array($consulta)){
        $filas = $oConexion->getData();
        foreach($filas as $fila) {
            $pagina = $fila["pagina"];
            $time = time();
            array_push($lista, "sbn_AdministrarDocumentos.php?accion=mostrarImagen&id_tdl_datos=$id_tdl_datos&pagina=$pagina&time=$time");
        }
        $oSmarty->assign("lista_imagenes", $lista);
    }else
        $oSmarty->assign("error", "consultarImagenes: ".$oConexion->getErrorMessage());
    $oConexion->liberarResultado();
    $oConexion->Cerrar();
    $oSmarty->assign("img_id_tdl_datos", $id_tdl_datos);
    $oSmarty->display("documento.tpl");
}

function mostrarImagen($rotar = false) {
    global $MIES;

    $oConexion = new Conexion($MIES["motor_base"], $MIES["db_usuario"], $MIES["db_password"],
                    $MIES["basedatos"], $MIES["servidor"], $MIES["flags"], $MIES["encoding"]);
//organizaciones_Imagenes.php?accion=mostrarImagen&amp;id_tdl_datos=12723&amp;pagina=1&amp;time=1274927159
    $id_tdl_datos = $_REQUEST["id_tdl_datos"];
    $pagina = is_null($_REQUEST["pagina"])?1:$_REQUEST["pagina"];
//organizaciones_Imagenes.php?accion=rotarImagen&id_tdl_datos=12723&pagina=1&grados=90
    $params = array();
    $params[0] = array("tabla", "TDL_IMG", "string", 7);
    $params[1] = array("campo", "imagen", "string", 6);
    $params[2] = array("condicion", "id_tdl_datos = $id_tdl_datos and pagina = $pagina", "string", 100);

    if($oConexion->EjecutarProcedure("TABLA2", $params)) {
        $filas = $oConexion->getData();
        $imagen = $filas[0]["imagen"];

        $oConexion->liberarResultado();
        $oConexion->Cerrar();

        if(!is_null($imagen)) {
            //va el nombre del archivo jpg que vamos a crear,
            //como ya sacamos la foto entonces la vamos a poner un file
            $nombre_archivo = $id_tdl_datos."_".$pagina;
            $foto="tmp/$nombre_archivo.tiff";

            //abrimos el file
            $ft=fopen($foto,"w");
            if (fwrite($ft,$imagen) === FALSE) {
                echo "No se puede abrir el archivo ($foto)";
                exit;
            }
            fclose($ft);

            $size = getimagesize($foto);

            if($size[0] < $size[1]) {
                $menor = "<";
                $mayor = "";
            }else {
                $menor = "";
                $mayor = ">";
            }
            $foto = str_replace('.tiff', '.jpg', $foto);

            if($rotar) {
                $grados = $_REQUEST["grados"];
                $rotate = "-rotate \"$menor$grados$mayor\"";
            }else $rotate = "";
//echo $rotate;
            $exec = "convert tmp/$nombre_archivo.tiff $rotate tmp/$nombre_archivo.jpg";
//echo $exec."<br>";
            exec($exec, $yaks);
//printArray($yaks);
            //exec("chmod 777 tmp/$nombre_archivo.jpg", $yaks);

            unlink("tmp/$nombre_archivo.tiff");
            $time = time();
            $ft = fopen($foto, "rb");
            header("Content-Type: image/jpeg");
            //unlink("tmp/$nombre_archivo.jpg");
            if($ft) {
                fpassthru($ft);
                fclose($ft);
            }
            unlink("tmp/$nombre_archivo.jpg");
        }
    }else echo $oConexion->getErrorMessage();
    $oConexion->Cerrar();
}

function toolbarImagenes() {
    $pag_actual = $_REQUEST["pag_actual"];
    $outXML = new DOMDocument('1.0', 'UTF-8');
    $outXML->formatOutput = true;

    $total_paginas = $_REQUEST["total_paginas"];
    if($total_paginas == 0) $pag_actual = 0;
    $toolbar = $outXML->appendChild($outXML->createElement('toolbar'));

    //Exportar a PDF
    $item = $toolbar->appendChild($outXML->createElement("item"));
    $item->setAttribute("id","pdf");
    $item->setAttribute("type","button");
    $item->setAttribute("img","pdf.png");
    $item->setAttribute("imgdis","pdf_dis.png");
    $item->setAttribute("title","Exportar a PDF");
    //$item->setAttribute("enabled","false");

    //Imprimir
    $item = $toolbar->appendChild($outXML->createElement("item"));
    $item->setAttribute("id","imprimir");
    $item->setAttribute("type","button");
    $item->setAttribute("img","print.gif");
    $item->setAttribute("imgdis","print_dis.gif");
    $item->setAttribute("title","Imprimir");
    //$item->setAttribute("enabled","false");

    //separador
    $item = $toolbar->appendChild($outXML->createElement("item"));
    $item->setAttribute("id","sep1");
    $item->setAttribute("type","separator");

    //paginas
    $item = $toolbar->appendChild($outXML->createElement("item"));
    $item->setAttribute("id","pagina_previa");
    $item->setAttribute("type","button");
    $item->setAttribute("img","pag_prev.png");
    $item->setAttribute("imgdis","pag_prev_dis.png");
    $item->setAttribute("title","Página Previa");
    if($pag_actual < 2)
        $item->setAttribute("enabled","false");

    $item = $toolbar->appendChild($outXML->createElement("item"));
    $item->setAttribute("id","pag_actual");
    $item->setAttribute("type","buttonInput");
    $item->setAttribute("value","$pag_actual");
    $item->setAttribute("width","30");
    $item->setAttribute("title","Página Actual");

    $item = $toolbar->appendChild($outXML->createElement("item"));
    $item->setAttribute("id","pagina_siguiente");
    $item->setAttribute("type","button");
    $item->setAttribute("img","pag_sig.png");
    $item->setAttribute("imgdis","pag_sig_dis.png");
    $item->setAttribute("title","Página Siguiente");
    if($total_paginas < 1)
        $item->setAttribute("enabled","false");

    //<item id="text3" type="text" text="Ford Explorer"/>
    $item = $toolbar->appendChild($outXML->createElement("item"));
    $item->setAttribute("id","total_paginas");
    $item->setAttribute("type","text");
    $item->setAttribute("text","de $total_paginas");

    //separador
    $item = $toolbar->appendChild($outXML->createElement("item"));
    $item->setAttribute("id","sep3");
    $item->setAttribute("type","separator");

    //rotar
    $item = $toolbar->appendChild($outXML->createElement("item"));
    $item->setAttribute("id","rotar_izq");
    $item->setAttribute("type","button");
    $item->setAttribute("img","rotar_izq.png");
    $item->setAttribute("imgdis","rotar_izq_dis.png");
    $item->setAttribute("title","Rotar Izquierda");

    $item = $toolbar->appendChild($outXML->createElement("item"));
    $item->setAttribute("id","rotar_der");
    $item->setAttribute("type","button");
    $item->setAttribute("img","rotar_der.png");
    $item->setAttribute("imgdis","rotar_der_dis.png");
    $item->setAttribute("title","Rotar Derecha");

    //separador
    $item = $toolbar->appendChild($outXML->createElement("item"));
    $item->setAttribute("id","sep3");
    $item->setAttribute("type","separator");

    //zoom
    $item = $toolbar->appendChild($outXML->createElement("item"));
    $item->setAttribute("id","zoom_in");
    $item->setAttribute("type","button");
    $item->setAttribute("img","zoom_in.png");
    $item->setAttribute("imgdis","zoom_in_dis.png");
    $item->setAttribute("title","Aumentar Zoom");

    $item = $toolbar->appendChild($outXML->createElement("item"));
    $item->setAttribute("id","zoom_out");
    $item->setAttribute("type","button");
    $item->setAttribute("img","zoom_out.png");
    $item->setAttribute("imgdis","zoom_out_dis.png");
    $item->setAttribute("title","Disminuir Zoom");
    /*
    <item id="separador" type="button" img="other.gif" imgdis="other_dis.png" text="Separador"/>
	<item id="sep4" type="separator"/>
	<item id="salir" type="button" img="exit.png" text="Cerrar" imgdis="exit_dis.png"/>*/
    
    //separador
    $item = $toolbar->appendChild($outXML->createElement("item"));
    $item->setAttribute("id","sep4");
    $item->setAttribute("type","separator");

    //Separador Virtual
    $item = $toolbar->appendChild($outXML->createElement("item"));
    $item->setAttribute("id","separador");
    $item->setAttribute("type","button");
    $item->setAttribute("img","other.gif");
    $item->setAttribute("imgdis","other_dis.png");
    $item->setAttribute("text","Separadores Virtuales");

    //separador
    $item = $toolbar->appendChild($outXML->createElement("item"));
    $item->setAttribute("id","sep5");
    $item->setAttribute("type","separator");

    //Cerrar
    $item = $toolbar->appendChild($outXML->createElement("item"));
    $item->setAttribute("id","salir");
    $item->setAttribute("type","button");
    $item->setAttribute("img","exit.png");
    $item->setAttribute("imgdis","exit_dis.png");
    $item->setAttribute("text","Cerrar");

    /*
    //panning
    $item = $toolbar->appendChild($outXML->createElement("item"));
    $item->setAttribute("id","panning");
    $item->setAttribute("type","button");
    $item->setAttribute("img","debug.gif");
    $item->setAttribute("imgdis","debug_dis.gif");
    $item->setAttribute("title","Mover");
    */
    header('Content-type: text/xml');
    echo $outXML->saveXML();
}

function consultarSeparadores() {
    global $MIES;

    $oConexion = new Conexion($MIES["motor_base"], $MIES["db_usuario"], $MIES["db_password"],
                    $MIES["basedatos"], $MIES["servidor"], $MIES["flags"], $MIES["encoding"]);
    $outXML = new DOMDocument('1.0', 'UTF-8');
    $outXML->formatOutput = true;

    $rows = $outXML->appendChild($outXML->createElement('rows'));
    $head = $rows->appendChild($outXML->createElement("head"));
    $id_tdl_datos = $_REQUEST["id_tdl_datos"];
    $params[0] = array("tabla", "SEP_TDL", "string", 7);
    $params[1] = array("campo", "*", "string", 2);
    $params[2] = array("condicion", "id_tdl_datos = $id_tdl_datos", "string", 50);

    if($oConexion->EjecutarProcedure("TABLA2", $params)) {
        $headers = $oConexion->getHeaders();
        //solo requiero de las columnas 6,4,5,7
        $req = array(6,4,5,7);
        for($i = 0; $i < count($req); $i++) {
            $column = $outXML->createElement("column");
            $column->setAttribute("width", 100/(count($req)));
            $column->setAttribute("type", "ed");
            $column->setAttribute("align", "center");
            //$column->appendChild($outXML->createTextNode(strtoupper(iconv("utf8-bin", "UTF-8", $headers[$req[$i]-1]))));
            if($MIES["encoding"] != "utf8")
                $column->appendChild($outXML->createTextNode(strtoupper(utf8_encode($headers[$req[$i]-1]))));
            else
                $column->appendChild($outXML->createTextNode(strtoupper($headers[$req[$i]-1])));
            $head->appendChild($column);
        }

        $settings = $outXML->createElement("settings");
        $colwidth = $outXML->createElement("colwidth");
        $colwidth->appendChild($outXML->createTextNode("%"));
        $settings->appendChild($colwidth);
        $head->appendChild($settings);

        $i = 0;
        $filas = $oConexion->getData("NUM");
        if(count($filas) > 0) {
            foreach($filas as $fila) {
                $row = $outXML->createElement("row");
                $row->setAttribute("id", $fila[2]."_".$i);
                if($i == 0)
                    $row->setAttribute("selected", 1);

                $cell = $outXML->createElement("cell");
                $cell->setAttribute("type", "ro");
                $cell->appendChild($outXML->createTextNode($fila[5]));
                $row->appendChild($cell);

                $cell1 = $outXML->createElement("cell");
                $cell1->setAttribute("type", "ro");
                $cell1->appendChild($outXML->createTextNode($fila[3]));
                $row->appendChild($cell1);

                $cell2 = $outXML->createElement("cell");
                $cell2->setAttribute("type", "ro");
                $cell2->appendChild($outXML->createTextNode($fila[4]));
                $row->appendChild($cell2);

                $cell3 = $outXML->createElement("cell");
                $cell3->setAttribute("type", "ro");
                $cell3->appendChild($outXML->createTextNode($fila[6]));
                $row->appendChild($cell3);

                $rows->appendChild($row);
                $i++;
            } // del foreach
        }else {
            $row = $outXML->createElement("row");
            $row->setAttribute("id", 1);

            $cell = $outXML->createElement("cell");
            //$cell->setAttribute("type", "ro");
            $cell->setAttribute("colspan", count($req));
            $cell->appendChild($outXML->createTextNode("No se encontraron documentos para mostrar"));
            $row->appendChild($cell);

            for($i = 0; $i < count($req)-1; $i++) {
                $cell = $outXML->createElement("cell");
                $row->appendChild($cell);
            }
            $rows->appendChild($row);
        }
    }else {
        $exito = false;
        echo "consultarSeparadores: ".$oConexion->getErrorMessage();
    }

    $oConexion->liberarResultado();
    $oConexion->Cerrar();
    header('Content-type: text/xml');
    echo $outXML->saveXML();
}
?>
